/*
 * Copyright 2016 Andrey Tolpeev
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.github.vase4kin.teamcityapp.agents.data;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import com.github.vase4kin.teamcityapp.account.create.data.OnLoadingListener;
import com.github.vase4kin.teamcityapp.agents.api.Agent;
import com.github.vase4kin.teamcityapp.agents.api.Agents;
import com.github.vase4kin.teamcityapp.base.list.data.BaseListRxDataManager;

import java.util.List;

/**
 * Data manager for {@link com.github.vase4kin.teamcityapp.agents.view.BaseAgentListFragment}
 */
public interface AgentsDataManager extends BaseListRxDataManager<Agents, Agent> {

    /**
     * {@inheritDoc}
     */
    void load(@Nullable Boolean includeDisconnected,
              @NonNull OnLoadingListener<List<Agent>> loadingListener,
              boolean update);

    /**
     * Load count of agents
     *
     * @param loadingListener - Listener to handle loading server callbacks
     */
    void loadCount(@NonNull OnLoadingListener<Integer> loadingListener);

    /**
     * Post update tab tile event
     *
     * @param size - Size of agents
     * @param type - Agent tab type
     */
    void postUpdateTabTitleEvent(int size, int type);
}
